#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <cstdio>
#include <string>
#include <stack>
#include <set>
#define IOS ios::sync_with_stdio(false), cin.tie(0)
using namespace std;
typedef long long ll;
ll dp[200100];
ll v[200100];
ll L,s,t,n;
const ll INF=0x3f3f3f3f;
// bool judge(ll x){
//     ll k1=x/s;
//     ll k2=x/t;
//     if(k1==k2&&x%t!=0)return false;
//     else return true;
// }

int main()
{
    IOS;
    while(cin>>L>>s>>t>>n){
        memset(v,0,sizeof(v));
        memset(dp,INF,sizeof(dp));
        ll id;
        for(ll i=0;i<n;i++){
            cin>>id;
            v[id]=1;
        }   
        dp[0]=0;
        ll k;
        for(k=1;;k++){
            ll l=k*s,r=k*t;
            // cout<<l<<" "<<r<<endl;
            for(ll i=l;i<=r;i++){
                if(dp[i]!=INF)continue;
                ll x=i-t;
                ll y=i-s;
                for(ll j=x;j<=y;j++){
                    if(j>=0&&dp[j]!=INF){
                        dp[i]=min(dp[j]+v[i],dp[i]);
                    }
                }
            }
            if(k*s>=L)break;
        }
        // for(ll i=s;i<=t;i++)dp[i]=v[i];
        // ll k1=n/s;
        // ll k2=n/t;
        // ll n1;
        // if(k1==k2){n=(k1+1)*t;n1=(k1+1)*s;}
        // else {n=k1*t;n1=k1*s;}
        // for(ll i=2*s;i<=n;i++){
        //     if(judge(i)){
        //         ll x=i-t;
        //         ll y=i-s;
        //         dp[i]=dp[y]+v[i];
        //         for(ll j=x;j<y;j++){
        //             if(judge(j)){
        //                 dp[i]=min(dp[j]+v[i],dp[i]);
        //             }
        //         }
        //     }
        // }
        ll ans=INF;
        for(ll i=1;i<=L;i++){
             cout<<"dp["<<i<<"]="<<dp[i]<<endl;
        }
        for(ll i=L;i<=k*t;i++){
            ans=min(ans,dp[i]);
            // cout<<"dp["<<i<<"]="<<dp[i]<<endl;
        }
        cout<<ans<<endl;
    }
    getchar();
    getchar();
    return 0;
}
